#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void change_word(char line_word[], int number, int space_num);

void main88() {
    int iNum = 0;
    char *pc;
    int line = 20;  //每行的长度
    int word_lenth = 0, lenth_flag = 0;
    int a = 0;
    char temp_word[21];  //临时存放一行的字符串，20个有效字符，一个放'\0'
    char *p;  //字符指针
    FILE *fp;
    int i;
    char c[50], b[10], ch;

    if ((fp = fopen("//storage//emulated//0//abc.txt", "r")) == NULL) {
        printf("can not be opened\n");
        exit(0);
    }
    for (i = 0; (ch = fgetc(fp)) != EOF; i++) {
        c[i] = ch;
        putchar(c[i]);
    }
    printf("\n");
    fclose(fp);
    p = c;
    pc = c;
    scanf("%s", b);
    while (pc) {
        pc = strstr(pc, b);
        if (pc) {
            iNum++;
            pc += strlen(b);
        }
    }

    printf("%d\n", iNum);
    word_lenth = strlen(c);  //计算字符串的长度
    lenth_flag = 0;
    a = 0;  //做标记用到的变量

    //该循环就是将原始字符串，以20个字符一行来划分
    while (lenth_flag + line < word_lenth)  //判断超出了字符串的总长度没有，lenth_flag指向字符串分割出去后剩下的首位置
    {
        p = p + line;  //p指向当前需要分割的位置
        while (*p != ' ')  //如果当前位置不是空格，则分割位置往前移动，直到遇到一个空格，作为结束位置
        {
            p = p - 1;
            a++;  //记录该这一行字符串距离20个字符差几个；
        }

        if (*(p - (line - a)) == ' ') {
            strncpy(temp_word, p - (line - a) + 1, line - a);
            temp_word[line - a - 1] = '\0';
        }  //将新的一行字符串复制到temp_word里面来
        else {
            strncpy(temp_word, p - (line - a), line - a);
            temp_word[line - a] = '\0';
        }

        lenth_flag = lenth_flag + (line - a);  //重新指向剩下字符串的开始

        change_word(temp_word, 21, a); //此函数将新的一行字符串左右对齐
        printf("%s  \n", temp_word); //对齐后的字符串输出
        a = 0;
    }
    strncpy(temp_word, p + 1, line - a);
    printf("%s\n", temp_word);

    getchar();
}

void change_word(char line_word[], int number, int space_num)  //line_word[]存放字符串，number字符串长度；space_num字符串介绍后面的空格有多少
{
    char *p = line_word;
    char str[21];
    int i = 0, j = 0, space[20] = {0};
    int inside = 0;

    while (*p != '\0')//统计单词间空格的数量
    {
        if (*p == ' ') inside++;
        p = p + 1;
    }
    p = line_word;
    if (inside == 0) return;
    if (space_num == 0) return;

    for (i = 0; i < space_num; i++) //计算每个单词间的空格会扩展几个空格
    {
        j = j % inside;
        space[j]++;
        j++;
    }
    i = 0;
    j = 0;
    while (*p != '\0') //该循环在每个空格间添加空格，以保障字符串结尾能对齐到20这个位置
    {
        if (*p != ' ') str[i++] = *p++;
        else {
            str[i++] = *p++;
            while (space[j]--) str[i++] = ' ';
            j++;
        }
    }
    str[i] = '\0';
    strncpy(line_word, str, 20);
    line_word[20] = '\0';
}


